﻿// Pagina para la administracion de Procuradores
Ext.define('Procuradores', {
    extend: 'ABMBase',
    Title: 'Formulario ABM de Procuradores',
    Model: 'Model.Procuradores',
    defaultPropertySort: 'Nombre',
    storeArticuloClasificacion: CreateForeignStore('storeSucursal', 'Model.Sucursales'),
    storeProvincias: CreateFirstEmptyStore('storeProvincias', 'Model.Provincias'),
    storeLocalidades: CreateFirstEmptyStore('storeLocalidades', 'Model.Localidades'),
    storeLocalidadesLista: CreateForeignStore('storeLocalidadesLista', 'Model.Localidades'),
    storeAccesoRecorridas: CreateForeignStore('storeAccesoRecorridas', 'Model.AccesoRecorridas'),
    listeners: {
        Creando: function (rcd) {
            // Se setean los valores por defecto de cada Procurador
            rcd.record.set('idSucursal', 1);
            rcd.record.set('tpRecorrida', 'C');
            rcd.record.set('habilitado', true);
            rcd.record.set('idProvincia', null);
            rcd.record.set('idLocalidad', null);
            // Seteo el control de cd_operador para que sea editable
            Ext.getCmp('tfcd_operador').setReadOnly(false);
        },
        Actualizando: function (rcd) {
            // Cuando se actualiza un registro se le setean estos valores como actuales.
            rcd.record.set('ultimoacceso', new Date());
            rcd.record.set('actual', new Date());
        },
        Actualizado: function (rcd) {
            // Una vez que se guardaron los datos satisfactoriamente se le asignan las recorridas al procurador seleccionado
            activeInstance.EjecutarEnServidor('GuardarAccesoRecorridas', {
                id: rcd.record.data.id,
                accesos: Ext.getCmp('bsAccesoRecorridas').getValue().join()
            });
        },
        Editando: function (rcd) {
            // Cuando se edita un procurador obtenemos las recorridas asignadas para mostrarla en el combo de seleccion multiple.
            var res = activeInstance.EjecutarEnServidor('ObtenerAccesoRecorridas', {
                id: rcd.record.data.id
            });
            Ext.getCmp('bsAccesoRecorridas').setValue(eval('[' + res + ']'));
            // Seteo el control de cd_operador para que no sea editable
            Ext.getCmp('tfcd_operador').setReadOnly(true);
        }
    },
    WindowPanel: [{
        xtype: 'fieldset',
        title: 'General',
        collapsible: true,
        items: [{
            xtype: 'container',
            frame: true,
            layout: 'column',
            items: [{
                xtype: 'fieldset',
                columnWidth: 0.5,
                border: false,
                style: { padding: 0 },
                items: [{
                    xtype: 'textfield',
                    fieldLabel: 'Identificador',
                    name: 'id',
                    readOnly: true
                }, {
                    xtype: 'textfield',
                    fieldLabel: 'Apellido',
                    name: 'Apellido',
                    maxLength: 50,
                    enforceMaxLength: true,
                    allowBlank: false
                }, {
                    xtype: 'textfield',
                    id: 'tfcd_operador',
                    fieldLabel: 'Operador',
                    name: 'cd_operador',
                    maxLength: 50,
                    enforceMaxLength: true,
                    allowBlank: false
                }]
            }, {
                xtype: 'fieldset',
                columnWidth: 0.5,
                border: false,
                style: { padding: 0 },
                items: [{
                    xtype: 'combobox',
                    fieldLabel: 'Sucursal',
                    queryMode: 'local',
                    displayField: 'Empresa',
                    valueField: 'idSucursal',
                    editable: false,
                    readOnly: true,
                    store: Ext.StoreMgr.get('storeSucursal'),
                    allowBlank: false,
                    name: 'idSucursal'
                }, {
                    xtype: 'textfield',
                    fieldLabel: 'Nombre',
                    name: 'Nombre',
                    maxLength: 50,
                    enforceMaxLength: true,
                    allowBlank: false
                }]
            }]
        }]
    }, {
        xtype: 'fieldset',
        title: 'Domicilio',
        collapsible: true,
        items: [{
            xtype: 'textfield',
            fieldLabel: 'Dirección',
            name: 'Direccion',
            maxLength: 50,
            enforceMaxLength: true,
            anchor: '97%'
        }, {
            xtype: 'container',
            frame: false,
            layout: 'column',
            style: { padding: 0 },
            items: [{
                xtype: 'fieldset',
                columnWidth: 0.5,
                border: false,
                style: { padding: 0 },
                items: [{
                    id: 'cbProvincia',
                    xtype: 'combobox',
                    fieldLabel: 'Provincia',
                    queryMode: 'local',
                    displayField: 'Provincia',
                    valueField: 'idProvincia',
                    editable: false,
                    store: Ext.StoreMgr.get('storeProvincias'),
                    allowBlank: true,
                    name: 'idProvincia',
                    listeners: {
                        change: function (cb, nValue) {
                            // Cuando cambiamos la seleccion de una provincia, cargamos las localidades filtradas por la provincia.
                            Ext.getCmp('cbLocalidad').getStore().clearFilter();
                            Ext.getCmp('cbLocalidad').getStore().filter('idProvincia', nValue);
                        }
                    }
                }, {
                    xtype: 'textfield',
                    fieldLabel: 'Teléfono',
                    name: 'Telefono',
                    maxLength: 50,
                    enforceMaxLength: true
                }]
            }, {
                xtype: 'fieldset',
                columnWidth: 0.5,
                border: false,
                style: { padding: 0 },
                items: [{
                    id: 'cbLocalidad',
                    xtype: 'combobox',
                    fieldLabel: 'Localidad',
                    queryMode: 'local',
                    displayField: 'Localidad',
                    valueField: 'idLocalidad',
                    editable: true,
                    store: Ext.StoreMgr.get('storeLocalidades'),
                    allowBlank: true,
                    name: 'idLocalidad',
                    listeners: {
                        select: function (cb, rcd) {
                            // Cuando selecciono una localidad seteo el valor de la provincia.
                            Ext.getCmp('cbProvincia').setValue(rcd[0].data.idProvincia);
                        }
                    }
                }, {
                    xtype: 'textfield',
                    fieldLabel: 'Celular',
                    name: 'celular',
                    maxLength: 50,
                    enforceMaxLength: true
                }]
            }]
        }, {
            xtype: 'textfield',
            fieldLabel: 'Email',
            name: 'email',
            maxLength: 50,
            enforceMaxLength: true,
            anchor: '97%',
            allowBlank: false,
            vtype: 'email',
            listeners: {
                change: function (tf, nValue) {
                    if (!Ext.isEmpty(nValue) && Ext.isEmpty(Ext.getCmp('tfcd_operador').getValue())) {
                        Ext.getCmp('tfcd_operador').setValue(nValue);
                    }
                }
            }
        }]
    }, {
        xtype: 'fieldset',
        title: 'Otros',
        collapsible: true,
        items: [{
            xtype: 'container',
            frame: false,
            layout: 'column',
            style: { padding: 0 },
            items: [{
                xtype: 'fieldset',
                columnWidth: 0.5,
                border: false,
                style: { padding: 0 },
                items: [{
                    xtype: 'textfield',
                    fieldLabel: 'Clave',
                    name: 'clave',
                    maxLength: 50,
                    enforceMaxLength: true,
                    allowBlank: false,
                    inputType: 'password'

                }, {
                    xtype: 'combobox',
                    fieldLabel: 'Nivel',
                    queryMode: 'local',
                    displayField: 'idNivel',
                    valueField: 'idNivel',
                    editable: false,
                    store: Ext.create('Ext.data.Store', {
                        fields: ['idNivel'],
                        data: [
                            { "idNivel": 1 },
                            { "idNivel": 2 },
                            { "idNivel": 3 },
                            { "idNivel": 4 },
                            { "idNivel": 5 },
                            { "idNivel": 6 },
                            { "idNivel": 7 },
                            { "idNivel": 8 },
                            { "idNivel": 9 }
                        ]
                    }),
                    allowBlank: false,
                    name: 'idNivel'
                }]
            }, {
                xtype: 'fieldset',
                columnWidth: 0.5,
                border: false,
                style: { padding: 0 },
                items: [{
                    xtype: 'checkbox',
                    fieldLabel: 'Habilitado',
                    name: 'habilitado'
                }, {
                    xtype: 'combobox',
                    fieldLabel: 'Tipo Recorrida',
                    queryMode: 'local',
                    displayField: 'tpRecorrida',
                    valueField: 'tpRecorrida',
                    editable: false,
                    store: Ext.create('Ext.data.Store', {
                        fields: ['tpRecorrida'],
                        data: [
                            { "tpRecorrida": 'C' },
                            { "tpRecorrida": 'I' }
                        ]
                    }),
                    allowBlank: false,
                    name: 'tpRecorrida'
                }]
            }]
        }]
    },
        {
            xtype: 'fieldset',
            title: 'Recorridas',
            collapsible: true,
            items: [{
                id: 'bsAccesoRecorridas',
                xtype: 'boxselect',
                fieldLabel: 'Recorridas',
                queryMode: 'local',
                descField: 'descripcion',
                displayField: 'descripcion',
                valueField: 'id',
                editable: true,
                store: Ext.StoreMgr.get('storeAccesoRecorridas'),
                allowBlank: true,
                anchor: '97%',
                typeAhead: true
            }]
        }],
    Columns: [
            { text: 'Id', dataIndex: 'id', filter: true },
            { text: 'Apellido', dataIndex: 'Apellido', filter: true },
            { text: 'Nombre', dataIndex: 'Nombre', filter: true },
            {
                header: 'Provincia',
                dataIndex: 'idProvincia',
                filter: CreateListFilter('Provincia', 'idProvincia', 'storeProvincias'),
                renderer: ForeignStoreRenderer('storeProvincias', 'Provincia')
            },
            {
                header: 'Localidad',
                dataIndex: 'idLocalidad',
                filter: CreateListFilter('Localidad', 'idLocalidad', 'storeLocalidadesLista'),
                renderer: ForeignStoreRenderer('storeLocalidadesLista', 'Localidad')
            },
            { text: 'Teléfono', dataIndex: 'Telefono', filter: true },
            { text: 'Celular', dataIndex: 'celular', filter: true },
            { text: 'Email', dataIndex: 'email', filter: true }
        ]
});
